var objDatepick = {
	cal:null,
	dlg:null,
	target:null,
	callback:"",
	init : function (elm) {
        var target	= document.getElementById(elm);
        this.target = target ;
        var cal		= document.getElementById('yui-calendar');
        
        cal.style.display = 'block';
        
        var e = Ext.get(elm);
        var pos = e.getXY(elm);
        var pos = [
            pos[0] + target.width + 10,
            pos[1]
        ]
        
        var calendar_elm = Ext.get('yui-calendar');
        //YAHOO.util.Dom.setXY('yui-calendar',[pos[0] + target.width + 10 ,pos[1]]);
        calendar_elm.setXY(pos)



   	    var dlg = new Ext.BasicDialog("yui-calendar", { 
            modal:true,
            width:180,
            height:220,
            shadow:true,
            minWidth:180,
            minHeight:220,
            resizable:false
		});
		dlg.addKeyListener(27, objDatepick.hide, objDatepick);
		dlg.center() ;
    	dlg.show(target.dom);


		
    	var cal = new YAHOO.widget.Calendar("cal", "yui-calendar-base");

	    // タイトルの定義。※ドラッグできるようにdivタグを書いておく
//    	cal.cfg.setProperty("title", "<div id='handle'>□■□ 日付選択 □■□</div>");

    	cal.cfg.setProperty("MULTI_SELECT", false);
    	cal.cfg.setProperty("close", false);
    	cal.cfg.setProperty("START_WEEKDAY", 1);

	    // ローカライズ
    	cal.cfg.setProperty("MDY_YEAR_POSITION", 1);
    	cal.cfg.setProperty("MDY_MONTH_POSITION", 2);
    	cal.cfg.setProperty("MDY_DAY_POSITION", 3);

    	cal.cfg.setProperty("MY_YEAR_POSITION", 1);
    	cal.cfg.setProperty("MY_MONTH_POSITION", 2);

		// 曜日のタイトル表示
    	cal.cfg.setProperty("WEEKDAYS_SHORT", [
        	"<font color='red'>日</font>",
        	"月",
        	"火",
        	"水",
        	"木",
        	"金",
        	"<font color='blue'>土</font>"
    	]);
		
		// 月のタイトル表示
    	cal.cfg.setProperty("MONTHS_LONG", [
        	"1月",
        	"2月",
        	"3月",
        	"4月",
        	"5月",
	        "6月",
    	    "7月",
    	    "8月",
        	"9月",
	        "10月",
	        "11月",
        	"12月"
    	]);

	    // args から選択した日付を取得し返す
    	var selectHandler = function(type, args, obj) {
			// 日付をYYYY-MM-DD形式で返す
			var year_str = args[0][0][0];
			var month_str = ZeroFormat(args[0][0][1],2);
			var day_str = ZeroFormat(args[0][0][2],2);
			
			var str = year_str + '-' + month_str + '-' + day_str;
			this.target.value = str;
			objDatepick.dlg.hide();
			if( this.callback != "" && this.callback != null){
                this.callback.call() ;
			}
//			cal.hide();
    	};

	    // 日付選択イベントをハンドル
    	cal.selectEvent.subscribe(selectHandler, this, true);
		
		// カレンダー表示
    	cal.render();

    	// 出力画面をドラッグできるように。
//    	var dd1 = new YAHOO.util.DD("output", "myGroup");
	    // タイトルをつかんだらドラッグできるように。
//    	var dd2 = new YAHOO.util.DD("yui-calendar", "myGroup");
//	    dd2.setHandleElId("handle");
		this.dlg=dlg;
		this.cal=cal;
	},
	show : function (target, cb) {
		// 初回の表示の場合はオブジェクトを生成する
		if (this.cal == null){
			this.init(target);
		} else {
		    this.target = document.getElementById(target) ;
		    objDatepick.dlg.center() ;
		    objDatepick.dlg.show() ;
			this.cal.show();
		}
        this.callback = eval(cb) ;
	},
	hide : function () {
    	objDatepick.dlg.hide();
//		this.cal.hide();
	}
}
